package com.spring.context.support;

import com.spring.beans.factory.support.BeanDefinitionRegistry;
import com.spring.core.metrics.ApplicationStartup;

import java.io.IOException;

/**
 * @author liyuncong
 * @version 1.0
 * @file GenericApplicationContext
 * @brief GenericApplicationContext
 * @details GenericApplicationContext
 * @date 2023-02-23
 *
 * Edit History
 * ----------------------------------------------------------------------------
 * DATE                        NAME               DESCRIPTION
 * 2023-02-23                  liyuncong          Created
 */
public class GenericApplicationContext
    extends AbstractApplicationContext
    implements BeanDefinitionRegistry {


    public GenericApplicationContext() {
        // TODO
        super(null);
    }

    public GenericApplicationContext(ClassLoader classLoader) {
        super(classLoader);
    }

    @Override
    public void setApplicationStartup(ApplicationStartup applicationStartup) {

    }

    @Override
    public ApplicationStartup getApplicationStartup() {
        return null;
    }

    @Override
    public void refresh() {

    }

    @Override
    public void start() {

    }

    @Override
    public void stop() {

    }

    @Override
    public void isRunning() {

    }

    @Override
    public void registerAlias(String name, String alias) {

    }

    @Override
    public void removeAlias(String alias) {

    }

    @Override
    public boolean isAlias(String name) {
        return false;
    }

    @Override
    public String[] getAliases(String name) {
        return new String[0];
    }

    /**
     * Closes this stream and releases any system resources associated
     * with it. If the stream is already closed then invoking this
     * method has no effect.
     *
     * <p> As noted in {@link AutoCloseable#close()}, cases where the
     * close may fail require careful attention. It is strongly advised
     * to relinquish the underlying resources and to internally
     * <em>mark</em> the {@code Closeable} as closed, prior to throwing
     * the {@code IOException}.
     *
     * @throws IOException if an I/O error occurs
     */
    @Override
    public void close() throws IOException {

    }
}
